#include "base/basictypes.h"
#include "ipc/ipc_message_macros.h"

#define IPC_MESSAGE_START 1

// URL下载请求数据
IPC_STRUCT_BEGIN(MSG_Request_Param)         
IPC_STRUCT_MEMBER(FilePath, request_url, L"")      // 请求下载的URL
IPC_STRUCT_MEMBER(FilePath, save_path, L"")        // 保存的路径
IPC_STRUCT_MEMBER(int64, start_position, 0)           // 请求开始下载的位置
IPC_STRUCT_END()

// URL请求回复数据
IPC_STRUCT_BEGIN(MSG_Response_Param)  
IPC_STRUCT_MEMBER(int, response_code, 200)         // HTTP返回码
IPC_STRUCT_END()

// URL下载进度数据
IPC_STRUCT_BEGIN(MSG_Progress_Param)  
IPC_STRUCT_MEMBER(int64, already_bytes, 0)         // 已经读取的字节数
IPC_STRUCT_MEMBER(int64, total_bytes, 0)           // 文件总字节数
IPC_STRUCT_MEMBER(int64, bytes_per_sec, 0)         // 当前速度(bytes/s)
IPC_STRUCT_END()

// 下载结束数据通知
IPC_STRUCT_BEGIN(MSG_Finished_Param)  
IPC_STRUCT_MEMBER(int, error_code, 0)               // 错误码
IPC_STRUCT_MEMBER(std::wstring, error_desc, L"")    // 错误描述
IPC_STRUCT_END()


// 请求下载资源消息
IPC_MESSAGE_ROUTED2(MSG_Request, 
                    unsigned int /*symbol*/,       // 请求的唯一标志
										MSG_Request_Param /*param*/    // 请求下载的数据信息
                    )

// 取消下载请求消息
IPC_MESSAGE_ROUTED1(MSG_Cancel,
                    unsigned int /*symbol*/         // 请求的唯一标志
                    )

// 请求回复消息
IPC_MESSAGE_ROUTED2(MSG_Response,
                    unsigned int /*symbol*/,        // 请求的唯一标志
                    MSG_Response_Param /*param*/    // 请求回复信息
                    )

// 进度通知消息
IPC_MESSAGE_ROUTED2(MSG_Progress,
                    unsigned int /*symbol*/,         // 请求的唯一标志
                    MSG_Progress_Param /*param*/     // 请求进度信息
                    )

// 下载完成通知消息
IPC_MESSAGE_ROUTED2(MSG_Finished,
                    unsigned int /*symbol*/,          // 请求的唯一标志
                    MSG_Finished_Param /*param*/      // 完成的信息
                    )

